Search engine systems can receive a key value, and rapidly compare such a key value against a large number of entries. Many search engine systems can be based on content addressable memories (CAMs). A CAM can provide rapid matching between a specific pattern of received data bits, commonly known as a search key or comparand, and data values stored in a CAM memory array. CAMs can provide advantageous matching speeds as entries (or locations) of an entire CAM array can be searched in parallel. This is in contrast to other types of memory devices (such as static random access memories (SRAM) or dynamic RAMs (DRAMs)) that typically access a single entry at a time.
A drawback to such essentially simultaneous access of multiple entries can be the large current draws (dl/dt spikes) that can result. Large current spikes can create issues with respect to an external power supply for the CAM. For example, when extreme current spikes occur a voltage drop across the entire device can occur. Unchecked, such a voltage drop can cause a CAM to slow down in speed (and hence fall out of specified operating speeds) or functionally fail. Even more particularly, to compensate for a voltage drop resulting from a search operation, a power supply can increase the sourcing of current to the CAM device in an effort to restore voltage levels to the desired level. If a next cycle is a non-search operation (e.g., idle cycle), a CAM device will not have a substantial current draw, and thus not have a transient current spike. However, a power supply response can typically lag actual CAM device needs, due to the time needed for sensing circuits to detect such voltage changes. Thus, during such a non-search cycle, a power supply may still be supplying current at the search level. This can generate an undesirable increase in voltage across the CAM device. A power supply may sense such an increase in voltage, and reduce current in an attempt to bring down a voltage to a desired level. If another search occurs, the pattern can repeat itself with a power supply adversely lagging in response to actual CAM current needs.
Various approaches to reducing current spikes have been proposed. One approach includes ensuring that a same amount of current across all operations, whether a search is occurring or not. This can prevent supply collapse and/or bounce, as a power supply may be providing about the same current level at all times. More particularly, a CAM device can execute “dummy” searches during idle or other non-search cycles, and discard any search results. In still other approaches, during a start-up operation, a successively larger number of CAM blocks can be activated to reduce turn-on current surges.
One such approach is shown in U.S. patent application Ser. No. 10/940,129 titled REDUCED TURN-ON CURRENT CONTENT ADDRESSABLE MEMORY (CAM) DEVICE AND METHOD, filed on Sep. 12, 2004, by Narum et al., now U.S. Pat. No. 7,099,170, issued on Aug. 29, 2006. Another approach is shown in U.S. patent application Ser. No. 11/014,123 titled METHOD AND APPARATUS FOR SMOOTHING CURRENT TRANSIENTS IN A CONTENT ADDRESSABLE MEMORY (CAM) DEVICE WITH DUMMY SEARCHES, filed on Dec. 15, 2004, by Om et al., now U.S. Pat. No, 7,149,101, issued on Dec. 12. 2006.
A detailed example of one approach to executing dummy searches is shown in a block schematic diagram of FIG. 9, and designated by the general reference character 900. FIG. 9 shows a CAM device (e.g., search engine) 900 that includes a CAM section 902, a key multiplexer 904, and a register 906. A CAM section 902 can execute search operations in response to an applied key value KEY_APP.
In an actual (e.g., not a dummy) search operation, a selection signal IDLE can be low, and key multiplexer 904 can provide a regular search key KEY_SRCH to CAM section 902. In an idle operation, a selection signal IDLE can be high, and key multiplexer 904 can provide an idle search key KEY_IDLE to CAM section 902. An idle key KEY_IDLE can be a previous search key applied to a CAM section that has been stored in register 906 by way of a feedback path 908.
FIG. 10 shows the operation of the arrangement like that of FIG. 9. FIG. 10 shows a resulting applied key value for three cycles 0-3. A first cycle 0 can be a regular search cycle, and a received key value can be the applied key value. The key for cycle 0 can be stored in a register 906. The next two cycles 1-2 can be idle cycles, thus the same key value applied in cycle 0 (stored in register 906) can be applied in cycles 1-2. Cycle 3 can be another regular search cycle, thus a new search key can be applied.
A drawback to the arrangement shown in FIGS. 9 and 10 can be the resulting current usage pattern. Because the key applied in an idle cycle is the same as a previously applied key, wires carrying the key data may not switch states (toggle) and hence consume considerably less power. Thus, the current consumed in the subsequent idle cycle can be less than that consumed in a previous search cycle. As a result, the current drawn will not be essentially the same across search and non-search (e.g., idle) cycles.
In light of the above, it would be desirable to arrive at some way of ensuring that current drawn in search and non-search (e.g., idle) cycles are close to one another than that achieved in conventional arrangements.